<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Servicioxcliente extends CI_Controller {
	//Metodo constructor de la clase
	function __construct(){
		parent::__construct();
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra un listado con todos los servicios de clientes activos o inactivos pero NO los borrados (-1). En el caso de pasar un id de cliente
	//en la URL se muestra solo los servicios de ese cliente
	function consultar($idCliente=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que el ambito sea el panel administrativo
		if($this->session->userdata('sesionIniciada') == 'si' && $this->session->userdata('ambito') == 'admin' && ($this->session->userdata('tipoUsuarioLog') == '1' || $this->session->userdata('tipoUsuarioLog') == 'Admin Root')){
			//Segunda comprobacion: que idCliente sea numerico y mayor o igual que cero. Igual que cero quiere decir que hay que mostrar todos los servicios de clientes existentes
			if(is_numeric($idCliente) && $idCliente>=0){				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				//Cargo el modelo donde estan los datos de los clientes registrados para pedirle un listado con todos ellos
				$this->load->model('m_cliente');
				
				//Busco todos los clientes activos
				$listadoClientes = $this->m_cliente->buscarActivos();
				
				//Le paso el listado de todos los clientes a la vista para que los muestre en un combo de filtrado
				$datos['clientes'] = $listadoClientes;
				
				//Le paso a la vista el id del cliente seleccionado
				$datos['idClienteSel'] = $idCliente;
				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				//Restricciones a la consulta de la busqueda de servicios de clientes segun el cliente seleccionado
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				
				$restriccion = "";
				if($idCliente!=0){
					$restriccion .= " AND cliente.idCliente=".$idCliente;
				}
				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				//Cargo el modelo donde estan los datos de los servicios de clientes registrados
				$this->load->model('m_servicioxcliente');
										
				//Busco todos los servicios de clientes, tanto activos como inactivos, menos los borrados(-1)
				$listadoServicios = $this->m_servicioxcliente->buscar($restriccion);
				
				//Le paso el listado de todos los servicios de clientes a la vista para que los muestre en una tabla
				$datos['servicios'] = $listadoServicios;
				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				$totalMensual = $this->m_servicioxcliente->buscarTotal(" AND cicloPago=1");
				$totalSemestral = $this->m_servicioxcliente->buscarTotal(" AND cicloPago=6");
				$totalAnual = $this->m_servicioxcliente->buscarTotal(" AND cicloPago=12");
				
				$ingresoMensual = $totalMensual->row()->total + ($totalSemestral->row()->total/6) + ($totalAnual->row()->total/12);
				
				$datos['ingresoMensual'] = $ingresoMensual;
				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				//Cargo la vista donde se muestra la tabla de servicios de clientes y la guardo en una variable para pasarsela a la vista principal
				$datosPrincipal['vista'] = $this->load->view('v_serviciosxclientes', $datos, true);
				
				//Cargo la vista principal con los datos de la vista consultar servicios de clientes
				$this->load->view('v_admin', $datosPrincipal);
			} else {
				//No se han pasado los parametros minimos necesarios para consultar los servicios de clientes existentes.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo solo se puede llamar con ajax
	function eliminar($idSxC=null, $idCliente=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que el ambito sea el panel administrativo
		if($this->session->userdata('sesionIniciada') == 'si' && $this->session->userdata('ambito') == 'admin' && ($this->session->userdata('tipoUsuarioLog') == '1' || $this->session->userdata('tipoUsuarioLog') == 'Admin Root')){
			//Segunda comprobacion: Que idSxC sea numerico y mayor que cero. Ademas que idCliente sea numerico y mayor o igual que cero.			
			if(is_numeric($idSxC) && $idSxC>0 && is_numeric($idCliente) && $idCliente>=0){
				//Cargo el modelo donde estan los datos de los servicios de clientes registrados
				$this->load->model('m_servicioxcliente');
				
				//Elimino al servicio de cliente pasado por la url
				$respuesta = $this->m_servicioxcliente->eliminar($idSxC, $this->session->userdata('idUsuarioLog'));
				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				//Cargo el modelo donde estan los datos de los clientes registrados para pedirle un listado con todos ellos
				$this->load->model('m_cliente');
				
				//Busco todos los clientes activos
				$listadoClientes = $this->m_cliente->buscarActivos();
				
				//Le paso el listado de todos los clientes a la vista para que los muestre en un combo de filtrado
				$datos['clientes'] = $listadoClientes;
				
				//Le paso a la vista el id del cliente seleccionado
				$datos['idClienteSel'] = $idCliente;
				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				//Restricciones a la consulta de la busqueda de servicios de clientes segun el cliente seleccionado
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				
				$restriccion = "";
				if($idCliente!=0){
					$restriccion .= " AND cliente.idCliente=".$idCliente;
				}
				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				//Cargo el modelo donde estan los datos de los servicios de clientes registrados
				$this->load->model('m_servicioxcliente');
										
				//Busco todos los servicios de clientes, tanto activos como inactivos, menos los borrados(-1)
				$listadoServicios = $this->m_servicioxcliente->buscar($restriccion);
				
				//Le paso el listado de todos los servicios de clientes a la vista para que los muestre en una tabla
				$datos['servicios'] = $listadoServicios;
				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				$totalMensual = $this->m_servicioxcliente->buscarTotal(" AND cicloPago=1");
				$totalSemestral = $this->m_servicioxcliente->buscarTotal(" AND cicloPago=6");
				$totalAnual = $this->m_servicioxcliente->buscarTotal(" AND cicloPago=12");
				
				$ingresoMensual = $totalMensual->row()->total + ($totalSemestral->row()->total/6) + ($totalAnual->row()->total/12);
				
				$datos['ingresoMensual'] = $ingresoMensual;
				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////				
				
				//Cargo la vista donde se muestra la tabla de servicios de clientes
				$this->load->view('v_serviciosxclientes', $datos);
			} else {
				//No se han pasado todos los parametros necesarios para borrar un registro
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				echo("No se han pasado todos los parametros necesarios para borrar un servicio de cliente");
			}			
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			echo("No tiene permiso para borrar un servicio de cliente");
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	function abrirPantallaCrear($idCliente=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que el ambito sea el panel administrativo
		if($this->session->userdata('sesionIniciada') == 'si' && $this->session->userdata('ambito') == 'admin' && ($this->session->userdata('tipoUsuarioLog') == '1' || $this->session->userdata('tipoUsuarioLog') == 'Admin Root')){							
			//Segunda comprobacion: que idCliente sea numerico y mayor o igual que cero. Igual que cero quiere decir que no hay que seleccionar ningun cliente.
			if(is_numeric($idCliente) && $idCliente>=0){
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				//Cargo el modelo donde estan los datos de los clientes registrados para pedirle un listado con todos ellos
				$this->load->model('m_cliente');
				
				//Busco todos los clientes activos
				$listadoClientes = $this->m_cliente->buscarActivos();
				
				//Le paso el listado de todos los clientes a la vista para que los muestre en un combo
				$datos['clientes'] = $listadoClientes;
				
				//Le paso a la vista el id del cliente seleccionado
				$datos['idClienteSel'] = $idCliente;
				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				//Cargo el modelo donde estan los datos de los servicios registrados para pedirle un listado con todos ellos
				$this->load->model('m_servicio');
				
				//Busco todos los servicios activos
				$listadoServicios = $this->m_servicio->buscarActivos();
				
				//Le paso el listado de todos los clientes a la vista para que los muestre en un combo
				$datos['servicios'] = $listadoServicios;
				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				//Cargo la vista donde se muestra el formulario para crear un servicio de cliente y la guardo en una variable para pasarsela a la vista principal
				$datosPrincipal['vista'] = $this->load->view('v_serviciosxclientes_crear',$datos, true);
				
				//Cargo la vista principal con los datos de la vista para crear un servicio de cliente
				$this->load->view('v_admin', $datosPrincipal);
			} else {
				//No se han pasado todos los parametros necesarios para crear un registro
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	function crear(){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que el ambito sea el panel administrativo
		if($this->session->userdata('sesionIniciada') == 'si' && $this->session->userdata('ambito') == 'admin' && ($this->session->userdata('tipoUsuarioLog') == '1' || $this->session->userdata('tipoUsuarioLog') == 'Admin Root')){
			//Segunda comprobacion: Que se haya pasado por post el ciclo de pago, cliente, servicio, precio y estado del servicio por cliente a crear
			if(is_numeric($this->input->post('cicloPago',true)) && ($this->input->post('cicloPago',true)=='0' || $this->input->post('cicloPago',true)=='1' || $this->input->post('cicloPago',true)=='6' || $this->input->post('cicloPago',true)=='12') && 
			   is_numeric($this->input->post('cliente',true)) && $this->input->post('cliente',true)>0 && 
			   is_numeric($this->input->post('servicio',true)) && $this->input->post('servicio',true)>0 && 
			   is_numeric($this->input->post('precio',true)) && $this->input->post('precio',true)>=0 && 
			   ($this->input->post('enviarFacturas',true) == '1' || $this->input->post('enviarFacturas',true) == '0') &&
			   ($this->input->post('enviarNotificaciones',true) == '1' || $this->input->post('enviarNotificaciones',true) == '0') &&
			   ($this->input->post('estado',true) == '1' || $this->input->post('estado',true) == '0' || $this->input->post('estado',true) == '2')){
				
				//Cargo el modelo donde estan los datos de los servicios x clientes
				$this->load->model('m_servicioxcliente');
				
				//Cargo el helper para generar una cadena de string aleatoria.
				$this->load->helper('string');
				
				//Reemplazamos < y > por su equivalente en html
				/*$codigoReproductorFiltrado = str_replace("<", "&lt;", $this->input->post('codigoReproductor'));
				$codigoReproductorFiltrado = str_replace(">", "&gt;", $codigoReproductorFiltrado);*/
				
				//Creamos el servicio al cliente
				$resultado = $this->m_servicioxcliente->crear(random_string('alnum',20),
															  $this->input->post('servicio',true),															  
															  $this->input->post('cliente',true),
															  $this->input->post('cicloPago',true),
															  $this->input->post('precio',true),
															  $this->input->post('enviarFacturas',true),
															  $this->input->post('enviarNotificaciones',true),
															  $this->input->post('url',true),
															  $this->input->post('urlAdmin',true),
															  $this->input->post('usuarioWeb',true),
															  $this->input->post('passwordWeb',true),
															  $this->input->post('usuarioStreaming',true),
															  $this->input->post('ip',true),
															  $this->input->post('puerto',true),
															  $this->input->post('passwordStreaming',true),
															  $this->input->post('codigoReproductor'),
															  $this->input->post('facebook',true),
															  $this->input->post('twitter',true),
															  $this->input->post('codigoBarras',true),
															  $this->input->post('botonPago'),
															  $this->input->post('referente',true),
															  $this->input->post('gananciaReferente',true),
															  quotes_to_entities($this->input->post('observaciones',true)),
															  $this->input->post('estado',true), $this->session->userdata('idUsuarioLog'));			
				if($resultado == 1){
					$ultimoServicioCreado = $this->db->insert_id();
															
					$codigoContabilizadorGenerico = $this->m_configuracion->getConfiguracion()->row()->codigoContabilizador;
					
					//echo($codigoContabilizadorGenerico);
					
					//Reemplazamos [{URL}] por la url correcta para este servicio
					$codigoContabilizadorParticular = str_replace("[{URL}]", site_url("estadistica/registrar/".$ultimoServicioCreado), $codigoContabilizadorGenerico);
					
					//echo($codigoContabilizadorParticular);
					
					//Modificamos el codigo
					$resultado = $this->m_servicioxcliente->modificarCodigoContabilizador($ultimoServicioCreado, $codigoContabilizadorParticular);
					
					//Cargo el modelo para cargar un mail a la cola
					$this->load->model('m_cola_mail');
					
					//Creamos el mail. idTabla, idRegistro, tipoOperacion, estado
					$resultado = $this->m_cola_mail->crear(2, $ultimoServicioCreado, 1, 2, $this->session->userdata('idUsuarioLog'));
				
					echo("<script> alert('El servicio de cliente se ha creado correctamente.');</script>");
				}else{
					echo("<script> alert('El servicio de cliente no se ha creado. Ha habido un error.');</script>");
				}
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	function abrirPantallaModificar($idSxC=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que el ambito sea el panel administrativo
		if($this->session->userdata('sesionIniciada') == 'si' && $this->session->userdata('ambito') == 'admin' && ($this->session->userdata('tipoUsuarioLog') == '1' || $this->session->userdata('tipoUsuarioLog') == 'Admin Root')){
			//Segunda comprobacion: Que idSxC pasado sea numerico y mayor que cero.
			if(is_numeric($idSxC) && $idSxC>0){
				//Cargo el modelo donde estan los datos de los servicios de clientes registrados
				$this->load->model('m_servicioxcliente');
				
				//Busco al servicio de cliente que hay que modificar
				$servicio = $this->m_servicioxcliente->get($idSxC);
				
				//Tercera comprobacion: Que el servicio de cliente pasado por la url sea existente
				if($servicio->num_rows() == 1){
					//Le paso el servicio a modificar a la vista
					$datos['servicioSel'] = $servicio;
					
					//Busco al servicio siguiente del que hay que modificar
					$idServicioSig = $this->m_servicioxcliente->getContiguo($idSxC,1);
					
					//Le paso el servicio de cliente siguiente del que hay que modificar a la vista
					$datos['idServicioSig'] = $idServicioSig;
					
					//Busco al servicio de  cliente anterior del que hay que modificar
					$idServicioAnt = $this->m_servicioxcliente->getContiguo($idSxC,-1);
					
					//Le paso el servicio de cliente anterior del que hay que modificar a la vista
					$datos['idServicioAnt'] = $idServicioAnt;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de los clientes registrados para pedirle un listado con todos ellos
					$this->load->model('m_cliente');
					
					//Busco todos los clientes activos e inactivos. Ya que un referente puede ser un cliente inactivo
					$listadoClientes = $this->m_cliente->buscar();
					
					//Le paso el listado de todos los clientes a la vista para que los muestre en un combo
					$datos['clientes'] = $listadoClientes;
															
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo el modelo donde estan los datos de los servicios registrados para pedirle un listado con todos ellos
					$this->load->model('m_servicio');
					
					//Busco todos los servicios activos e inactivos.. Ya que un cliente puede tener un servicio actualmente inactivo
					$listadoServicios = $this->m_servicio->buscar();
					
					//Le paso el listado de todos los clientes a la vista para que los muestre en un combo
					$datos['servicios'] = $listadoServicios;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo la vista donde se muestra el formulario para modificar un servicio de cliente y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_serviciosxclientes_modificar',$datos, true);
					
					//Cargo la vista principal con los datos de la vista para modificar un cliente
					$this->load->view('v_admin', $datosPrincipal);
				} else {
					//El registro no existe.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//No se han pasado los parametros minimos necesarios para modificar un servicio de cliente
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	function modificar($idSxC=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que el ambito sea el panel administrativo
		if($this->session->userdata('sesionIniciada') == 'si' && $this->session->userdata('ambito') == 'admin' && ($this->session->userdata('tipoUsuarioLog') == '1' || $this->session->userdata('tipoUsuarioLog') == 'Admin Root')){	   
			//Segunda comprobacion: Que se haya pasado por post el ciclo de pago, servicio, precio y estado del servicio por cliente a modificar
			if(is_numeric($this->input->post('cicloPago',true)) && ($this->input->post('cicloPago',true)=='0' || $this->input->post('cicloPago',true)=='1' || $this->input->post('cicloPago',true)=='6' || $this->input->post('cicloPago',true)=='12') && 
			   is_numeric($this->input->post('servicio',true)) && $this->input->post('servicio',true)>0 && 
			   is_numeric($this->input->post('precio',true)) && $this->input->post('precio',true)>=0 && 
			   ($this->input->post('enviarFacturas',true) == '1' || $this->input->post('enviarFacturas',true) == '0') &&
			   ($this->input->post('enviarNotificaciones',true) == '1' || $this->input->post('enviarNotificaciones',true) == '0') &&
			   ($this->input->post('estado',true) == '1' || $this->input->post('estado',true) == '0' || $this->input->post('estado',true) == '2')){
				
				//Cargo el modelo donde estan los datos de los servicios x clientes
				$this->load->model('m_servicioxcliente');
				
				//Reemplazamos < y > por su equivalente en html
				/*$codigoReproductorFiltrado = str_replace("<", "&lt;", $this->input->post('codigoReproductor'));
				$codigoReproductorFiltrado = str_replace(">", "&gt;", $codigoReproductorFiltrado);*/
											
				//Modificamos el servicio del cliente
				$resultado = $this->m_servicioxcliente->modificar($idSxC,
																  $this->input->post('servicio',true),
																  $this->input->post('cicloPago',true),
																  $this->input->post('precio',true),
																  $this->input->post('enviarFacturas',true),
																  $this->input->post('enviarNotificaciones',true),
																  $this->input->post('url',true),
																  $this->input->post('urlAdmin',true),
																  $this->input->post('usuarioWeb',true),
																  $this->input->post('passwordWeb',true),
																  $this->input->post('usuarioStreaming',true),
																  $this->input->post('ip',true),
																  $this->input->post('puerto',true),
																  $this->input->post('passwordStreaming',true),
																  $this->input->post('codigoReproductor'),
																  $this->input->post('facebook',true),
																  $this->input->post('twitter',true),
																  $this->input->post('codigoBarras',true),
																  $this->input->post('botonPago'),
																  $this->input->post('referente',true),
																  $this->input->post('gananciaReferente',true),
																  quotes_to_entities($this->input->post('observaciones',true)),
																  $this->input->post('estado',true));
				if($resultado == 1){
					//Cargo el modelo para cargar un mail a la cola
					$this->load->model('m_cola_mail');
					
					//Creamos el mail. idTabla, idRegistro, tipoOperacion, estado
					$resultado = $this->m_cola_mail->crear(2, $idSxC, 2, 2, $this->session->userdata('idUsuarioLog'));
					
					echo("<script> alert('El servicio del cliente se ha modificado correctamente. ".$mensaje."');</script>");
				} else{
					echo("<script> alert('El servicio del cliente no se ha modificado. Ha habido un error o los datos permanecieron iguales.');</script>");
				}
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	/*function establecerHash(){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que el ambito sea el panel administrativo
		if($this->session->userdata('sesionIniciada') == 'si' && $this->session->userdata('ambito') == 'admin' && ($this->session->userdata('tipoUsuarioLog') == '1' || $this->session->userdata('tipoUsuarioLog') == 'Admin Root')){	   
			//Cargo el helper para generar una cadena de string aleatoria.
			$this->load->helper('string');
			
			//Cargo el modelo donde estan los datos de los servicios x clientes
			$this->load->model('m_servicioxcliente');
														
			//Buscamos todos los servicios que existen
			$listadoServicios = $this->m_servicioxcliente->buscar();
			
			$resultado = 0;			
			//Recorremos todos los servicios de clientes
			foreach ($listadoServicios->result() as $servicio){
				//Genero un hash aleatorio
				$hash = random_string('alnum',20);
				
				//Modificamos el hash del servicio del cliente
				$resultado += $this->m_servicioxcliente->modificarHash($servicio->idSxC,$hash);
			}
			
			if($resultado == $listadoServicios->num_rows()){							
				echo("<script> alert('Los servicio del cliente se han modificado correctamente.');</script>");
			} else {
				echo("<script> alert('Los servicio del cliente no se han modificado. Ha habido un error o los datos permanecieron iguales.');</script>");
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
		}
	}*/
	
	//Este metodo no se puede llamar con ajax
	//Muestra un listado con todos los servicios del cliente pasado por la url activos o inactivos pero NO los borrados (-1).
	function misServicios($idCliente=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que el ambito sea el panel administrativo
		if($this->session->userdata('sesionIniciada') == 'si' && $this->session->userdata('ambito') == 'admin' && $this->session->userdata('tipoUsuarioLog') == '2' && $this->session->userdata('idClienteLog') == $idCliente){
			//Segunda comprobacion: que idCliente sea numerico y mayor que cero.
			if(is_numeric($idCliente) && $idCliente>0){								
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				//Restricciones a la consulta de la busqueda de servicios de clientes segun el cliente pasado por la url
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				
				$restriccion = "";
				if($idCliente!=0){
					$restriccion .= " AND servicioxcliente.idCliente=".$idCliente;
				}
				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				//Cargo el modelo donde estan los datos de los servicios de clientes registrados
				$this->load->model('m_servicioxcliente');
										
				//Busco todos los servicios del cliente, tanto activos como inactivos, menos los borrados(-1)
				$listadoServicios = $this->m_servicioxcliente->buscar($restriccion);
				
				//Le paso el listado de todos los servicios del clientes a la vista para que los muestre en una tabla
				$datos['servicios'] = $listadoServicios;
				
				//Busco el total que debe abonar el cliente segun todos los servicios activos que tiene por mes
				$precioTotal = $this->m_servicioxcliente->buscarTotalPorMes($restriccion);
				
				//Le paso el total a la vista
				$datos['precioTotal'] = $precioTotal;
				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	
				
				//Cargo la vista donde se muestra la tabla de servicios del cliente y la guardo en una variable para pasarsela a la vista principal
				$datosPrincipal['vista'] = $this->load->view('v_serviciosxclientes_misservicios', $datos, true);
				
				//Cargo la vista principal con los datos de la vista consultar servicios del cliente
				$this->load->view('v_admin', $datosPrincipal);
			} else {
				//No se han pasado los parametros minimos necesarios para consultar los servicios del cliente existentes.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	//Este metodo muestra los datos de un servicio de un cliente para que pueda obtener los mismos
	function visualizar($idSxC=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que el ambito sea el panel administrativo
		if($this->session->userdata('sesionIniciada') == 'si' && $this->session->userdata('ambito') == 'admin' && $this->session->userdata('tipoUsuarioLog') == '2'){
			//Segunda comprobacion: Que idSxC pasado sea numerico y mayor que cero.
			if(is_numeric($idSxC) && $idSxC>0){
				//Cargo el modelo donde estan los datos de los servicios de clientes registrados
				$this->load->model('m_servicioxcliente');
				
				//Busco al servicio de cliente que hay que visualizar
				$servicio = $this->m_servicioxcliente->get($idSxC);
				
				//Tercera comprobacion: Que el servicio de cliente pasado por la url sea existente y del que esta logeado
				if($servicio->num_rows() == 1 && $servicio->row()->idCliente == $this->session->userdata('idClienteLog')){
					//Le paso el servicio a visualizar a la vista
					$datos['servicioSel'] = $servicio;
										
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Cargo la vista donde se muestra el formulario para visualizar un servicio de cliente y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_serviciosxclientes_visualizar',$datos, true);
					
					//Cargo la vista principal con los datos de la vista para visualizar un servicio de un cliente
					$this->load->view('v_admin', $datosPrincipal);
				} else {
					//El registro no existe.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//No se han pasado los parametros minimos necesarios para visualizar un servicio de cliente
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra un listado con todos los servicios a los que referencio el cliente pasado por la url activos o inactivos pero NO los borrados (-1).
	function misReferencias($idCliente=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que el ambito sea el panel administrativo
		if($this->session->userdata('sesionIniciada') == 'si' && $this->session->userdata('ambito') == 'admin' && $this->session->userdata('tipoUsuarioLog') == '2' && $this->session->userdata('idClienteLog') == $idCliente){
			//Segunda comprobacion: que idCliente sea numerico y mayor que cero.
			if(is_numeric($idCliente) && $idCliente>0){
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				//Restricciones a la consulta de la busqueda de servicios de clientes segun el cliente pasado por la url
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				
				$restriccion = "";
				if($idCliente!=0){
					$restriccion .= " AND servicioxcliente.idReferente=".$idCliente;
				}
				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				//Cargo el modelo donde estan los datos de los servicios de clientes registrados
				$this->load->model('m_servicioxcliente');
										
				//Busco todos los servicios que referencio el cliente, tanto activos como inactivos, menos los borrados(-1)
				$listadoServicios = $this->m_servicioxcliente->buscar($restriccion);
				
				//Le paso el listado de todos los servicios que referencio el cliente a la vista para que los muestre en una tabla
				$datos['servicios'] = $listadoServicios;
				
				//Busco el total que debemos abonar al cliente segun todos los servicios que referencio activos que tiene por mes
				$gananciaTotal = $this->m_servicioxcliente->buscarGanaciaReferenteTotalPorMes($restriccion);
				
				//Le paso el total a la gananciaTotal
				$datos['gananciaTotal'] = $gananciaTotal;
				
				////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	
				
				//Cargo la vista donde se muestra la tabla de servicios del cliente y la guardo en una variable para pasarsela a la vista principal
				$datosPrincipal['vista'] = $this->load->view('v_serviciosxclientes_misreferencias', $datos, true);
				
				//Cargo la vista principal con los datos de la vista consultar servicios del cliente
				$this->load->view('v_admin', $datosPrincipal);
			} else {
				//No se han pasado los parametros minimos necesarios para consultar los servicios referenciados por el cliente existentes.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	function visualizarCupon($hash=null){
		//Segunda comprobacion: Que has pasado sea no vacio y de 20 caracteres
		if($hash != "" && strlen($hash) == 20){
			//Cargo el modelo donde estan los datos de los servicios de clientes registrados
			$this->load->model('m_servicioxcliente');
			
			//Busco al servicio de cliente que hay que visualizar el cupon
			$servicio = $this->m_servicioxcliente->getHash($hash);
			
			//Tercera comprobacion: Que el servicio de cliente pasado por la url sea existente
			if($servicio->num_rows() == 1){
				echo($servicio->row()->botonPago);
			}
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	function visualizarCuponReutilizable($hash=null){
		//Segunda comprobacion: Que has pasado sea no vacio y de 20 caracteres
		if($hash != "" && strlen($hash) == 20){
			//Cargo el modelo donde estan los datos de los servicios de clientes registrados
			$this->load->model('m_servicioxcliente');
			
			//Busco al servicio de cliente que hay que visualizar el cupon
			$servicio = $this->m_servicioxcliente->getHash($hash);
			
			//Tercera comprobacion: Que el servicio de cliente pasado por la url sea existente
			if($servicio->num_rows() == 1){
				//Le paso el servicio a visualizar a la vista
				$datos['servicioSel'] = $servicio;
			
				//Cargo la vista donde se mostrara el cupon reutilizale imprimible
				$this->load->view('v_serviciosxclientes_cuponreutilizable', $datos);
			}
		}
	}
	
	//Este metodo solo se puede llamar con ajax
	//Devuelve el total del costo de un servicio del cliente para completar una factura
	function consultarDatos($idSxC=null, $tipoConsulta=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que el ambito sea el panel administrativo
		if($this->session->userdata('sesionIniciada') == 'si' && $this->session->userdata('ambito') == 'admin' && ($this->session->userdata('tipoUsuarioLog') == '1' || $this->session->userdata('tipoUsuarioLog') == 'Admin Root')){
			//Segunda comprobacion: que idSxC sea numerico y mayor o igual que cero. Igual que cero quiere decir que no hay servicio seleccionado y por ende hay que devolver cero
			if(is_numeric($idSxC) && $idSxC>=0 && is_numeric($tipoConsulta) && ($tipoConsulta==1 || $tipoConsulta==2)){
				if($idSxC>0){
					//Cargo el modelo donde estan los datos de los servicios de clientes registrados
					$this->load->model('m_servicioxcliente');
					
					//Busco el servicio x cliente para obtener el precio o la ganancia del referente
					$sxc = $this->m_servicioxcliente->get($idSxC);
					
					if($tipoConsulta==1)						
						echo($sxc->row()->precio); //Devuelvo el precio del servicio
					else
						echo($sxc->row()->gananciaReferente); //Devuelvo el precio del servicio					
				}else{
					echo("0");
				}
			} else {
				//No se han pasado los parametros minimos necesarios para consultar el costo del servicio de cliente.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
}

/* End of file servicioxcliente.php */
/* Location: ./application/controllers/servicioxcliente.php */